import { defineStore } from 'pinia'
import request from '@/utils/request'
import { ApiRes, CategoryItem } from '@/types/data'
import { topCategory } from '../constants'
// 提供一个默认值 这样没有数据的时候自动加载 默认的数据
const defaultCategory = topCategory.map((item) => {
  return {
    name: item,
  }
})
export default defineStore('category', {
  state() {
    return {
      // money: 1000,
      list: defaultCategory as CategoryItem[],
    }
  },

  actions: {
    async getAllcategory() {
      const res = await request.get<ApiRes<CategoryItem[]>>(
        '/home/category/head'
      )
      // console.log(res.data)

      // 这边我们需要动态控制一级分类的点击显示和隐藏的效果, 需要在获取的数据中添加一个字段 这边我们使用flag
      res.data.result.forEach((item) => {
        item.flag = false
      })
      this.list = res.data.result
    },

    // 显示一级路由的方法
    show(id: string) {
      const itemObj = this.list.find((item) => item.id === id)
      itemObj!.flag = true
    },
    // 关闭一级路由的方法
    hide(id: string) {
      const itemObj = this.list.find((item) => item.id === id)
      itemObj!.flag = false
    },
  },
})
